package com.invite.me.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by Administrator on 2017/8/24/024.
 */

public class RegularUtil {
    /**
     * 正则验证
     *
     * @param toCheckStr 待验证的字符串
     * @param patternStr 验证格式字符串
     * @return 是否通过验证
     */
    public static boolean canMatch(String toCheckStr, String patternStr) {
        Pattern pattern = Pattern.compile(patternStr);
        Matcher matcher = pattern.matcher(toCheckStr);
        if (!matcher.matches()) {
            return false;
        }
        return true;
    }

    /**
     * 验证是否为整数.
     *
     * @param toCheckStr 待验证的字符串
     * @return 是否通过验证
     */
    public static boolean isNumeric(String toCheckStr) {
        return canMatch(toCheckStr, "[0-9][0-9]*");
    }

    /**
     * 验证是否为手机号
     *
     * @param toCheckStr 待验证的字符串
     * @return 是否通过验证
     */
    public static boolean isMobileNo(String toCheckStr) {
        String patternStr = "^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|(147))\\d{8}$";
        return canMatch(toCheckStr, patternStr);
    }

    /**
     * 取值范围为a-z,A-Z,0-9,"_",汉字，不能以"_"结尾,用户名必须是6-20位
     *
     * @param toCheckStr 待验证的字符串
     * @return 是否通过验证
     */
    public static boolean isUsername(String toCheckStr) {
        String patternStr = "^[\\w\\u4e00-\\u9fa5](?<!_)$";
        return canMatch(toCheckStr, patternStr);
    }

    /**
     * 取值范围为数字、字母,且为空
     *
     * @param toCheckStr 待验证的字符串
     * @return 是否通过验证
     */
    public static boolean isPassword(String toCheckStr) {
        String patternStr = "^[a-zA-Z0-9]+$";
        return canMatch(toCheckStr, patternStr);
    }

    /**
     * 验证身份证号是否符合规则
     * @param text 身份证号
     * @return
     */
    public static boolean personIdValidation(String text) {
        String regx = "[0-9]{17}x";
        String regxx = "[0-9]{17}X";
        String reg1 = "[0-9]{15}";
        String regex = "[0-9]{18}";
        return text.matches(regx) || text.matches(reg1) || text.matches(regex)||text.matches(regxx);
    }
    public static boolean isLegalId(String id){
        if (id.toUpperCase().matches("(^\\d{15}$)|(^\\d{17}([0-9]|X)$)")){
            return true;
        }else {
            return false;
        }
    }
    /**
     * 验证输入的名字是否为“中文”或者是否包含“·”
     */
    public static boolean isLegalName(String name){
        if (name.contains("·") || name.contains("•")){
            if (name.matches("^[\\u4e00-\\u9fa5]+[·•][\\u4e00-\\u9fa5]+$")){
                return true;
            }else {
                return false;
            }
        }else {
            if (name.matches("^[\\u4e00-\\u9fa5]+$")){
                return true;
            }else {
                return false;
            }
        }
    }

}
